Database Views হল ডেটাবেসের একটি ভার্চুয়াল টেবিল, যা মূল ডেটাবেস টেবিল থেকে নির্বাচিত ডেটাকে একটি নির্দিষ্ট উপস্থাপনায় প্রদর্শন করে। একটি View সাধারণত SQL কুয়েরি বা স্টোরড প্রোসিজার (Stored Procedure) হিসেবে তৈরি করা হয়, যা একাধিক টেবিলের ডেটাকে একত্রিত করে বা বিশেষভাবে সাজিয়ে একটি নির্দিষ্ট আউটপুট প্রদান করে। Entity Framework (EF) এ Views ব্যবহার করা অনেকটা স্টোরড প্রোসিজারের মতো, তবে এখানে মূল লক্ষ্য হল ডেটা নির্বাচন এবং ফরম্যাটিং, যা ডেটাবেসের বিভিন্ন অংশে পুনরায় ব্যবহার করা যায়।
একটি Database View আসলে একটি সিলেক্ট কুয়েরির ফলাফল হিসেবে কাজ করে, যেটি ডেটাবেসের টেবিলগুলির ওপর ভিত্তি করে তৈরি করা হয়। এটি মূলত ভার্চুয়াল টেবিল, কারণ এটি ডেটাবেসের কোনো বাস্তব টেবিলের মতো সংরক্ষিত হয় না, তবে কেবল একটি SQL কুয়েরি বা ডেটাবেসের ডেটার নির্দিষ্ট উপস্থাপনা হিসেবে কাজ করে।
View তৈরি করতে গিয়ে, আপনি সাধারণত এক বা একাধিক টেবিলের ডেটা একত্রিত করবেন, এবং সেই ডেটা প্রদর্শনের জন্য একটি নির্দিষ্ট কাঠামো তৈরির চেষ্টা করবেন।
ডেটাবেসে View তৈরি করতে SQL ব্যবহার করা হয়। Entity Framework (EF) এ View তৈরি করা এবং তারপরে ব্যবহার করার প্রক্রিয়া নিম্নরূপ:
প্রথমে, ডেটাবেসে View তৈরি করতে হয়। ধরুন, একটি সেলস রিপোর্ট তৈরি করতে চান, যেখানে পণ্য এবং বিক্রির তথ্য একত্রিত করা হবে। একটি সাধারণ View তৈরির SQL কুয়েরি হতে পারে:
CREATE VIEW SalesReport AS
SELECT ProductName, SUM(Quantity) AS TotalQuantity, SUM(TotalPrice) AS TotalSales
FROM Sales
JOIN Products ON Sales.ProductID = Products.ProductID
GROUP BY ProductName;
এই কুয়েরিটি SalesReport নামে একটি View তৈরি করবে, যেখানে পণ্যের বিক্রি এবং মোট বিক্রির পরিমাণ দেওয়া থাকবে।
EF-এর মধ্যে, View এর সাথে মডেল কনফিগারেশন করার জন্য আপনাকে কেবল View এর ডেটা রিড করার জন্য একটি ক্লাস তৈরি করতে হবে। মনে রাখবেন, View কে Entity হিসেবে ব্যবহার করার জন্য আপনাকে DbSet তৈরি করতে হবে, যদিও এটি সাধারণত Read-Only।
public class SalesReport
{
public string ProductName { get; set; }
public int TotalQuantity { get; set; }
public decimal TotalSales { get; set; }
}
public class ApplicationDbContext : DbContext
{
public DbSet<SalesReport> SalesReports { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// View এর জন্য ডেটাবেস মডেল কনফিগারেশন
modelBuilder.Entity<SalesReport>(entity =>
{
entity.HasNoKey(); // View এ কোনো প্রাইমারি কী থাকে না
entity.ToView("SalesReport"); // View এর নাম উল্লেখ
});
}
}
একবার View তৈরি এবং মডেলে কনফিগার করা হলে, আপনি Entity Framework এর মাধ্যমে সহজেই View থেকে ডেটা রিড করতে পারবেন।
using (var context = new ApplicationDbContext())
{
var salesReports = context.SalesReports.ToList();
foreach (var report in salesReports)
{
Console.WriteLine($"Product: {report.ProductName}, Total Quantity: {report.TotalQuantity}, Total Sales: {report.TotalSales}");
}
}
এই কোডটি SalesReport
View থেকে ডেটা রিড করবে এবং তারপরে তা প্রদর্শন করবে।
Views আপনাকে মূল টেবিলের ডেটা অ্যাবস্ট্রাক্ট করতে সাহায্য করে, যার ফলে একাধিক টেবিলের ডেটাকে একটি সোজা ও পরিষ্কার উপস্থাপনায় রেন্ডার করা যায়। এর মাধ্যমে আপনি ডেটাবেসের কাঠামো থেকে ব্যবহারকারীদের দূরে রাখতে পারেন এবং কেবল প্রয়োজনীয় ডেটাই প্রদর্শন করতে পারেন।
Views ব্যবহার করে একাধিক টেবিলের ডেটা একত্রিত করা যায় এবং সেই ডেটাকে একটি সহজ ও ব্যবহারযোগ্য ফরম্যাটে উপস্থাপন করা যায়। এটি বিশেষভাবে তখন কার্যকরী হয়, যখন আপনাকে ডেটাবেসের মধ্যে সম্পর্কিত টেবিলের ডেটা একত্রিত করতে হয়।
Views সাধারণত Read-Only হয়ে থাকে, অর্থাৎ আপনি Views থেকে ডেটা রিড করতে পারেন, তবে তাতে ডেটা ইনসার্ট, আপডেট বা ডিলিট করতে পারবেন না। এর মানে হল, যে ডেটা ব্যবহারকারীদের দেখানো হচ্ছে তা পূর্বে তৈরি হওয়া এবং কার্যকরী ডেটাবেস টেবিল থেকে একত্রিত।
Views ব্যবহার করে আপনি নির্দিষ্ট ধরনের জটিল কুয়েরি পুনরাবৃত্তি করতে পারবেন, এবং তা সরাসরি ডেটাবেসে সংরক্ষণ করে রাখতে পারবেন। এতে ডেটাবেসে সিলেক্ট কুয়েরি প্রক্রিয়া দ্রুত হয়, কারণ Views আগে থেকেই প্রিপেয়ার্ড থাকে।
Stored Procedure এবং Views এ কাজ করার জন্য Entity Framework-এর মধ্যে কিছু সীমাবদ্ধতা রয়েছে, তবে আপনি FromSqlRaw বা ExecuteSqlRaw এর মতো মেথড ব্যবহার করে এগুলোকে সমর্থন দিতে পারেন। এই মেথডগুলো সরাসরি SQL স্টেটমেন্ট ব্যবহার করতে সাহায্য করে।
var salesReports = context.SalesReports.FromSqlRaw("SELECT * FROM SalesReport").ToList();
Entity Framework-এ Database Views হল শক্তিশালী টুল যা ডেটা একত্রিত, প্রসেস, এবং উপস্থাপনা করতে সাহায্য করে। আপনি Views ব্যবহার করে জটিল কুয়েরি অপারেশনগুলো ডেটাবেস স্তরে অগ্রসর করতে পারেন এবং এটি ডেটার রিড-অনলি অ্যাক্সেস প্রদান করে। Views এবং EF-এর মডেল কনফিগারেশন করার মাধ্যমে আপনি ডেটাবেসের কাঠামো ও ডেটা ম্যানেজমেন্টকে আরও কার্যকরী এবং অপটিমাইজড করতে পারেন।
common.read_more